// 作业模型
const { DataTypes } = require('sequelize');
const sequelize = require('../config/database');
const Class = require('./Class');
const User = require('./User');

/**
 * 作业模型
 * 存储教师发布的作业信息
 */
const Homework = sequelize.define('Homework', {
  /**
   * 作业ID，主键，自增
   */
  id: {
    type: DataTypes.INTEGER,
    primaryKey: true,
    autoIncrement: true,
    allowNull: false
  },
  /**
   * 作业名称
   */
  title: {
    type: DataTypes.STRING(100),
    allowNull: false,
    comment: '作业名称'
  },
  /**
   * 作业内容
   */
  content: {
    type: DataTypes.TEXT,
    allowNull: false,
    comment: '作业内容'
  },
  /**
   * 附件路径（如果有图片等附件）
   */
  attachment: {
    type: DataTypes.STRING(255),
    allowNull: true,
    comment: '附件路径'
  },
  /**
   * 粘贴的图片数据（JSON格式存储的DataURL数组）
   */
  images: {
    type: DataTypes.TEXT,
    allowNull: true,
    comment: '粘贴的图片数据'
  },
  /**
   * 发布教师ID
   */
  teacherId: {
    type: DataTypes.INTEGER,
    allowNull: false,
    references: {
      model: User,
      key: 'id'
    },
    comment: '发布教师ID'
  },
  /**
   * 班级ID，可以指定特定班级或全年级
   */
  classId: {
    type: DataTypes.INTEGER,
    allowNull: true,
    references: {
      model: Class,
      key: 'id'
    },
    comment: '班级ID'
  },
  /**
   * 截止日期
   */
  deadline: {
    type: DataTypes.DATE,
    allowNull: true,
    comment: '截止日期'
  },
  /**
   * 创建时间
   */
  createdAt: {
    type: DataTypes.DATE,
    allowNull: false,
    defaultValue: DataTypes.NOW
  },
  /**
   * 更新时间
   */
  updatedAt: {
    type: DataTypes.DATE,
    allowNull: false,
    defaultValue: DataTypes.NOW
  }
}, {
  tableName: 'homeworks',
  timestamps: true
});

// 关联关系
Homework.belongsTo(User, { foreignKey: 'teacherId', as: 'teacher' });
Homework.belongsTo(Class, { foreignKey: 'classId', as: 'classInfo' });
User.hasMany(Homework, { foreignKey: 'teacherId', as: 'publishedHomeworks' });
Class.hasMany(Homework, { foreignKey: 'classId', as: 'homeworks' });

module.exports = Homework;